Conversation
✨ API Changes# API Changelog n/a vs. n/a
## GET /v0/inboxes/{inbox_id}/messages/{message_id}/raw
- :warning: api path removed without deprecation💡 Download |
✨ API Changes# API Changelog n/a vs. n/a
## PATCH /v0/domains/{domain_id}
- endpoint added
## GET /v0/inboxes/{inbox_id}/messages/{message_id}/raw
- :warning: removed the media type 'application/octet-stream' for the response with the status '200'
- added the media type 'application/json' for the response with the status '200'
## PATCH /v0/pods/{pod_id}/domains/{domain_id}
- endpoint added
## POST /v0/pods/{pod_id}/domains/{domain_id}/verify
- endpoint added
## GET /v0/pods/{pod_id}/domains/{domain_id}/zone-file
- endpoint added
## PATCH /v0/pods/{pod_id}/inboxes/{inbox_id}
- endpoint added
## DELETE /v0/pods/{pod_id}/threads/{thread_id}
- endpoint added
## DELETE /v0/threads/{thread_id}
- endpoint added💡 Download |
There was a problem hiding this comment.
5 issues found across 4 files (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="fern/docs.yml">
<violation number="1" location="fern/docs.yml:140">
P1: This redirect destination appears to be a typo (`get-raw-raw`) and will likely send users to a broken API docs URL.</violation>
</file>
<file name="fern/definition/inboxes/messages.yml">
<violation number="1">
P1: According to linked Linear issue ENG-347, `getRaw` should be faded/removed, but this change adds the `getRaw` endpoint back into the API definition.</violation>
<violation number="2" location="fern/definition/inboxes/messages.yml:68">
P1: This adds a second `update` endpoint with the same key in the same `endpoints` map; duplicate keys can overwrite one definition or fail schema/parsing validation.</violation>
</file>
<file name="fern/pages/core-concepts/messages.mdx">
<violation number="1" location="fern/pages/core-concepts/messages.mdx:238">
P2: The docs re-add `messages.getRaw` even though this change is supposed to retire raw message access.
According to linked Linear issue ENG-347, `get-raw-message` should be faded and references should migrate to `messages.get`.</violation>
</file>
<file name="fern/definition/messages.yml">
<violation number="1" location="fern/definition/messages.yml:148">
P1: According to linked Linear issue ENG-347, `get-raw-message` should be faded/retired, but this change adds the `RawMessageResponse` contract that keeps raw message download behavior in the API surface.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
| @@ -61,10 +61,22 @@ service: | |||
| display-name: Get Raw Message | |||
There was a problem hiding this comment.
P1: According to linked Linear issue ENG-347, getRaw should be faded/removed, but this change adds the getRaw endpoint back into the API definition.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At fern/definition/inboxes/messages.yml, line 58:
<comment>According to linked Linear issue ENG-347, `getRaw` should be faded/removed, but this change adds the `getRaw` endpoint back into the API definition.</comment>
<file context>
@@ -55,6 +55,28 @@ service:
errors:
- global.NotFoundError
+ getRaw:
+ method: GET
+ path: /{message_id}/raw
</file context>
| type: list<MessageItem> | ||
| docs: Ordered by `timestamp` descending. | ||
|
|
||
| RawMessageResponse: |
There was a problem hiding this comment.
P1: According to linked Linear issue ENG-347, get-raw-message should be faded/retired, but this change adds the RawMessageResponse contract that keeps raw message download behavior in the API surface.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At fern/definition/messages.yml, line 148:
<comment>According to linked Linear issue ENG-347, `get-raw-message` should be faded/retired, but this change adds the `RawMessageResponse` contract that keeps raw message download behavior in the API surface.</comment>
<file context>
@@ -145,6 +145,13 @@ types:
type: list<MessageItem>
docs: Ordered by `timestamp` descending.
+ RawMessageResponse:
+ docs: Signed URL to download the raw .eml file.
+ properties:
</file context>
| * - messages.forward(inboxId, messageId, { to, subject?, text?, html? }) | ||
| * - messages.update(inboxId, messageId, { addLabels?, removeLabels? }) | ||
| * - messages.getAttachment(inboxId, messageId, attachmentId) | ||
| * - messages.getRaw(inboxId, messageId) -> { url } (pre-signed S3 URL for .eml) |
There was a problem hiding this comment.
P2: The docs re-add messages.getRaw even though this change is supposed to retire raw message access.
According to linked Linear issue ENG-347, get-raw-message should be faded and references should migrate to messages.get.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At fern/pages/core-concepts/messages.mdx, line 238:
<comment>The docs re-add `messages.getRaw` even though this change is supposed to retire raw message access.
According to linked Linear issue ENG-347, `get-raw-message` should be faded and references should migrate to `messages.get`.</comment>
<file context>
@@ -235,6 +235,8 @@ Copy one of the blocks below into Cursor or Claude for complete Messages API kno
* - messages.forward(inboxId, messageId, { to, subject?, text?, html? })
* - messages.update(inboxId, messageId, { addLabels?, removeLabels? })
* - messages.getAttachment(inboxId, messageId, attachmentId)
+ * - messages.getRaw(inboxId, messageId) -> { url } (pre-signed S3 URL for .eml)
+ * - messages.getRaw(inboxId, messageId)
*
</file context>
✨ API Changes# API Changelog n/a vs. n/a
## PATCH /v0/domains/{domain_id}
- endpoint added
## GET /v0/inboxes/{inbox_id}/messages/{message_id}/raw
- :warning: removed the media type 'application/octet-stream' for the response with the status '200'
- added the media type 'application/json' for the response with the status '200'
## PATCH /v0/pods/{pod_id}/domains/{domain_id}
- endpoint added
## POST /v0/pods/{pod_id}/domains/{domain_id}/verify
- endpoint added
## GET /v0/pods/{pod_id}/domains/{domain_id}/zone-file
- endpoint added
## PATCH /v0/pods/{pod_id}/inboxes/{inbox_id}
- endpoint added
## DELETE /v0/pods/{pod_id}/threads/{thread_id}
- endpoint added
## DELETE /v0/threads/{thread_id}
- endpoint added💡 Download |
|
@cubic thoughts? |
@tanishq-atm The shift from returning the file directly to a pre-signed URL is a solid move for performance, but there are a few things to tidy up:
|
✨ API Changes# API Changelog n/a vs. n/a
## PATCH /v0/domains/{domain_id}
- endpoint added
## GET /v0/inboxes/{inbox_id}/messages/{message_id}/raw
- :warning: removed the media type 'application/octet-stream' for the response with the status '200'
- added the media type 'application/json' for the response with the status '200'
## PATCH /v0/pods/{pod_id}/domains/{domain_id}
- endpoint added
## POST /v0/pods/{pod_id}/domains/{domain_id}/verify
- endpoint added
## GET /v0/pods/{pod_id}/domains/{domain_id}/zone-file
- endpoint added
## PATCH /v0/pods/{pod_id}/inboxes/{inbox_id}
- endpoint added
## DELETE /v0/pods/{pod_id}/threads/{thread_id}
- endpoint added
## DELETE /v0/threads/{thread_id}
- endpoint added💡 Download |
There was a problem hiding this comment.
1 issue found across 2 files (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="fern/pages/core-concepts/messages.mdx">
<violation number="1" location="fern/pages/core-concepts/messages.mdx:238">
P2: Use camelCase field names for the TypeScript `getRaw` response shape to match SDK conventions used in this doc.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
| * - messages.forward(inboxId, messageId, { to, subject?, text?, html? }) | ||
| * - messages.update(inboxId, messageId, { addLabels?, removeLabels? }) | ||
| * - messages.getAttachment(inboxId, messageId, attachmentId) | ||
| * - messages.getRaw(inboxId, messageId) -> { message_id, size, download_url, expires_at } (CloudFront signed URL for .eml) |
There was a problem hiding this comment.
P2: Use camelCase field names for the TypeScript getRaw response shape to match SDK conventions used in this doc.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At fern/pages/core-concepts/messages.mdx, line 238:
<comment>Use camelCase field names for the TypeScript `getRaw` response shape to match SDK conventions used in this doc.</comment>
<file context>
@@ -235,7 +235,7 @@ Copy one of the blocks below into Cursor or Claude for complete Messages API kno
* - messages.update(inboxId, messageId, { addLabels?, removeLabels? })
* - messages.getAttachment(inboxId, messageId, attachmentId)
- * - messages.getRaw(inboxId, messageId) -> { url } (pre-signed S3 URL for .eml)
+ * - messages.getRaw(inboxId, messageId) -> { message_id, size, download_url, expires_at } (CloudFront signed URL for .eml)
* - messages.getRaw(inboxId, messageId)
*
</file context>
| * - messages.getRaw(inboxId, messageId) -> { message_id, size, download_url, expires_at } (CloudFront signed URL for .eml) | |
| * - messages.getRaw(inboxId, messageId) -> { messageId, size, downloadUrl, expiresAt } (CloudFront signed URL for .eml) |
✨ API Changes# API Changelog n/a vs. n/a
## PATCH /v0/domains/{domain_id}
- endpoint added
## GET /v0/inboxes/{inbox_id}/messages/{message_id}/raw
- :warning: removed the media type 'application/octet-stream' for the response with the status '200'
- added the media type 'application/json' for the response with the status '200'
## PATCH /v0/pods/{pod_id}/domains/{domain_id}
- endpoint added
## POST /v0/pods/{pod_id}/domains/{domain_id}/verify
- endpoint added
## GET /v0/pods/{pod_id}/domains/{domain_id}/zone-file
- endpoint added
## PATCH /v0/pods/{pod_id}/inboxes/{inbox_id}
- endpoint added
## DELETE /v0/pods/{pod_id}/threads/{thread_id}
- endpoint added
## DELETE /v0/threads/{thread_id}
- endpoint added💡 Download |
✨ API Changes# API Changelog n/a vs. n/a
## PATCH /v0/domains/{domain_id}
- endpoint added
## GET /v0/inboxes/{inbox_id}/messages/{message_id}/raw
- :warning: removed the media type 'application/octet-stream' for the response with the status '200'
- added the media type 'application/json' for the response with the status '200'
## PATCH /v0/pods/{pod_id}/domains/{domain_id}
- endpoint added
## POST /v0/pods/{pod_id}/domains/{domain_id}/verify
- endpoint added
## GET /v0/pods/{pod_id}/domains/{domain_id}/zone-file
- endpoint added
## PATCH /v0/pods/{pod_id}/inboxes/{inbox_id}
- endpoint added
## DELETE /v0/pods/{pod_id}/threads/{thread_id}
- endpoint added
## DELETE /v0/threads/{thread_id}
- endpoint added💡 Download |
Summary by cubic
Restored
messages.getRawto return a CloudFront-signedRawMessageResponsefor the .eml, aligned with ENG-347. Confirmedmessages.update(PATCH) and removed the legacy docs redirect forget-raw-message.messages.getRaw(inboxId, messageId)usage to handleRawMessageResponse{ message_id, size, download_url, expires_at } and download viadownload_url(nourlalias).Written for commit b0711ef. Summary will update on new commits.